home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Glitch Apple Disk Collection
/
2014.glitch.apple.collection.zip
/
indexed
/
MISSINGR.DSK
/
MAGIC IN USE.bas
< prev
next >
Wrap
BASIC Source File
|
2014-09-09
|
18KB
|
217 lines
1 ONERR GOTO 9000
5 CZ$ = CHR$(26) + CHR$(15) + CHR$(2): PRINT CZ$; CHR$(15); CHR$(3)
10 D$ = CHR$(13) + CHR$(4):XD = PEEK(33588) + PEEK(33589) *256:MD = PEEK(33590) + PEEK(33591) *256
20 GOTO 6000
25 DT = DV +DP: IF DT >3 THEN DT = DT -4
28 RETURN
30 DV = INT(DT/16):DT = DT -DV *16: RETURN
80 CALL PEEK(33578) + PEEK(33579) *256:IN = PEEK(9): RETURN
85 CALL PEEK(33580) + PEEK(33581) *256:IN = PEEK(9): RETURN
90 VTAB 3: HTAB 43 - LEN(IN$): PRINT IN$;: FOR I = 1 TO 500: NEXT : VTAB 3: HTAB 43 - LEN(IN$): PRINT IN$;: RETURN
98 X = FRE(0): RESTORE :I = PEEK(32768 +K): FOR CY = 1 TO I: FOR X = 0 TO 3: READ FG$(X): NEXT X,CY: RETURN
100 V = PEEK(32777 +K):H = PEEK(32778 +K): RETURN
120 GOSUB 98
124 GOSUB 100:V = V +(V <4) -(V >20):H = H +(H <1) -(H >38):DT = PEEK(32775 +K): GOSUB 130: IF DT >3 THEN DT = DT -8
125 IF V <4 THEN POKE 32777 +K,6:V = 6
128 VTAB V: HTAB H: PRINT FG$(DT);: RETURN
130 DV = INT(DT/16):DT = DT -DV *16: RETURN
150 V = PEEK(K +2):H = PEEK(K +1):DP = PEEK(K +3): RETURN
200 V1 = V -1:H1 = H:V2 = V1:H2 = H1:P = 2: VTAB V1: HTAB H1 +1: PRINT "<CTRL-A>1?<CTRL-A>0";
210 VTAB V1: HTAB H1 +1: PRINT "<CTRL-A>1?<CTRL-A>0";: VTAB V2: HTAB H2 +1: PRINT "<CTRL-A>1?<CTRL-A>0";
212 V2 = V1:H2 = H1: GOSUB 85
215 IF IN = 210 OR IN = 207 THEN V1 = V2 -P: IF V1 <1 THEN V1 = 1
220 IF IN = 196 OR IN = 204 THEN V1 = V2 +P: IF V1 >23 THEN V1 = 23
225 IF IN = 198 OR IN = 208 THEN H1 = H2 +P: IF H1 >38 THEN H1 = 38
230 IF IN = 197 OR IN = 203 THEN H1 = H2 -P: IF H1 <1 THEN H1 = 1
240 IF IN < >160 THEN 210
250 VTAB V1: HTAB H1 +1: PRINT "<CTRL-A>1?<CTRL-A>0";: RETURN
260 IF PEEK(MB) < >R1 THEN MB = MB +8: IF MB < = 33530 THEN 260
265 RETURN
300 IF PEEK(33021) = 1 THEN P = PN: GOTO 320
305 POKE 9,PN: CALL PEEK(33574) + PEEK(33575) *256:P = PEEK(5): IF PEEK(10) < >0 THEN P = PN: GOTO 320
310 IN$ = " <CTRL-S>YOU OR <CTRL-S>PLAYER #" + STR$( INT(P/32 +1)): GOSUB 380: GOSUB 85:IN = IN -176: IF IN < >P/32 +1 THEN P = PN
320 RETURN : REM ADJACENCY
380 VTAB 21: HTAB 1: PRINT CZ$; CHR$(6);: HTAB 20 - LEN(IN$)/2: PRINT CHR$(15); CHR$(3);IN$;: FOR X = 1 TO 1500: NEXT X: VTAB 21: HTAB 20 - LEN(IN$)/2: PRINT IN$;: RETURN
450 IF RL <0 THEN RL = 1
455 RL = RL +1: IF RL <RH +1 AND RL <80 THEN DX = PEEK(33104 +RL): IF DX >128 THEN 465
460 IF RL <RH +1 AND RL <80 THEN 455
465 RETURN
500 RX = INT( RND(1) *20 +1): IF RX <20 -AC -LV THEN IN$ = "<CTRL-I><CTRL-S>HE MISSED!<CTRL-N>": GOSUB 380: GOTO 590
508 IN$ = "<CTRL-I><CTRL-S>HE <CTRL-S>HIT!<CTRL-N>": GOSUB 380: IF RX = 20 THEN DM = DM *4:IN$ = "<CTRL-I><CTRL-S>CRITIAL!<CTRL-N>": GOSUB 380
510 DX = INT( RND(1) *DM +1):RX = PEEK(HP) -DX
520 POKE HP,RX: GOTO 590
590 RETURN
600 RX = INT( RND(1) *20 +1): IF RX <20 -AC -LV THEN IN$ = "<CTRL-I><CTRL-S>MISSED!<CTRL-N>": GOSUB 90: GOTO 690
608 IN$ = "<CTRL-I><CTRL-S>YOU <CTRL-S>HIT!<CTRL-N>": GOSUB 90: IF RX = 20 THEN DM = DM *2:IN$ = "<CTRL-I><CTRL-S>CRITIAL!<CTRL-N>": GOSUB 90
610 DX = INT( RND(1) *DM +1):RX = PEEK(HP) -DX: IF RX < = 0 THEN POKE 32782 +PN, PEEK(32782 +PN) +1: GOTO 650
620 POKE HP,RX: GOTO 690
650 POKE MB,0:IN$ = "<CTRL-I><CTRL-S>IT DIES!<CTRL-N>": GOSUB 90:K = DP: GOSUB 150:K = PN: POKE 250,DP: POKE 251,H: POKE 253,V: CALL XD
660 VTAB 2: HTAB 1: PRINT CZ$;" <CTRL-C> <CTRL-C> "; CHR$(15); CHR$(3)
690 RETURN
800 RX = INT( RND(1) *20 +1): IF RX <20 -MG -LV THEN IN$ = "<CTRL-I><CTRL-S>FAILED!<CTRL-N>": GOSUB 90: GOTO 690
810 GOSUB 90:RX = DM *LV +MG: IF RX <1 THEN RX = 1
820 POKE MB +6,RX: RETURN
1000 POKE 250,D: POKE 251,H -1: POKE 253,V -1: POKE 252,H1 -1: POKE 254,V1 -1: CALL MD: RETURN
2000 V1 = V1 *7:H1 = H1 *7:V2 = V *7:H2 = (H +1) *7 -4
2010 HPLOT H2,V2 TO H1,V1: FOR T = 0 TO 500: NEXT : HCOLOR= DX: HPLOT H2,V2 TO H1,V1: RETURN
3000 GOSUB 100: GOSUB 200
3030 MB = 33408
3040 GOSUB 260: IF MB >33530 THEN 3175
3050 IF V1 < PEEK(MB +2) -2 OR V1 > PEEK(MB +2) + INT( PEEK(MB +4)/16) +1 THEN 3090
3060 IF H1 < PEEK(MB +1) -1 OR H1 > PEEK(MB +1) +( PEEK(MB +4) - INT( PEEK(MB +4)/16) *16) +3 THEN 3090
3070 I = MB: GOTO 3150
3090 MB = MB +8: IF MB <33530 THEN 3040
3100 GOTO 3175
3150 MX = PEEK(MB +5):DP = MB:MF = (MX -1) *8:HP = MB +7
3155 DT = PEEK(33287 +MF): GOSUB 30:MT = DV:MG = DT:AC = PEEK(33281 +MF): IF AC >127 THEN AC = AC -256
3160 RETURN
3175 MB = 0:IN$ = "<CTRL-I><CTRL-S>NO MONSTER<CTRL-N>": GOSUB 90
3200 POP : RETURN
3500 P = ( PEEK(33021) + PEEK(33022) +1) *32
3510 P = P -32: IF P < = 0 THEN POP : GOTO 10015
3520 IF PEEK(32776 +P) < >R1 THEN 3510
3530 DT = PEEK(32775 +P): GOSUB 30: IF DT >2 THEN 3510
3540 K = P: GOSUB 100:V1 = V:H1 = H:H = PEEK(MB +1):V = PEEK(MB +2):AC = PEEK(32789 +P):HP = 32791 +P:LV = PEEK(33394): RETURN
4000 DV = 0: GOSUB 100: IF H +V < = 14 THEN DV = 3: GOTO 4050
4010 IF H -V = >22 THEN DV = 1: GOTO 4050
4020 IF V < = 6 THEN DV = 4: GOTO 4050
4030 IF V = >15 THEN DV = 2
4040 IF NOT DV THEN 4100
4050 DP = PEEK(32779 +PN): GOSUB 25
4100 RETURN
6000 PN = PEEK(32992):K = PN:P = PEEK(33009 +PN/32):R1 = PEEK(33020): POKE 33009 +PN/32,0:LV = PEEK(32780 +PN): REM <CTRL-C><CTRL-C><CTRL-S>CLEAR <CTRL-S>MAGIC <CTRL-S>USE <CTRL-C>
6015 IF P >16 THEN 6025
6020 ON P GOSUB 6050,6250,6400,6200,6100,6350,6150,6750,6450,6500,6550,6600,6650,6700,6300,6800: REM <CTRL-C>MAGIC SPELLS<CTRL-C>
6022 GOTO 8000
6025 P = P -16
6030 ON P GOSUB 7100,6900,6950,6200,7050,7700,7150,6900,7250,6850,6900,7400,7450,7100,7550,6900: REM <CTRL-C><CTRL-C>POTIONS AND RINGS<CTRL-C>
6040 GOTO 8000
6050 GOSUB 3000:D = 20: HCOLOR= 3: GOSUB 1000:DM = 4:PH = 2: GOSUB 600:EP = 1 *DX +1: REM MAGIC MISSILE
6095 RETURN
6100 GOSUB 3000:D = 21: GOSUB 1000:DM = 2:PH = 1: GOSUB 600:EP = 1 *DX +1: REM <CTRL-C><CTRL-C><CTRL-S>DANCING <CTRL-S>LIGHTS <CTRL-C>
6145 RETURN
6150 GOSUB 4000:DN = DT:DX = DV: IF PEEK(33016 +DN) < >1 THEN IF PEEK(33016 +DN) < >4 THEN 6195
6155 IF PEEK(33024 + PEEK(33020)) < >255 THEN 6170
6160 POKE 8,DN: CALL PEEK(33570) + PEEK(33571) *256:R1 = PEEK(8):DN = DN +2 -4 *(DN >1)
6170 DP = PEEK(33024 +R1): POKE 33616,DP: CALL PEEK(33568) + PEEK(33569) *256: POKE 33616 +DN,0: POKE 33620 +DN,1: CALL PEEK(33584) + PEEK(33585) *256:DP = PEEK(33616): POKE 33016 +DT,2
6175 POKE 33024 +R1,DP: HCOLOR= 0:X = 33536 +(DX +1 -4 *(DX >1)) *4: CALL PEEK(X +2) + PEEK(X +3) *256: HCOLOR= 3: CALL PEEK(X) + PEEK(X +1) *256
6195 RETURN : REM <CTRL-C><CTRL-C><CTRL-S>WIZARD <CTRL-S>LOCK<CTRL-C>
6200 GOSUB 3000: IF MT < >1 THEN IN$ = "<CTRL-I><CTRL-S>NOT A PERSON<CTRL-N>": GOSUB 90: GOTO 6245
6210 HCOLOR= 2:DX = 0: GOSUB 2000:PH = 1:DM = LV:IN$ = "<CTRL-I><CTRL-S>CHARMED!<CTRL-N>": GOSUB 800:EP = DX
6245 RETURN : REM <CTRL-C><CTRL-C><CTRL-S>CHARM <CTRL-S>PERSON<CTRL-C>
6250 AC = PEEK(32789 +PN):RX = INT( RND(1) *4 +1):AC = AC -RX: IF AC <0 THEN AC = AC +256
6260 EP = RX: POKE 32789 +PN,AC:PH = 1: REM <CTRL-C><CTRL-C><CTRL-S>SHIELD<CTRL-C>
6295 RETURN
6300 GOSUB 4000: POKE 8,DT: CALL PEEK(33570) + PEEK(33571) *256:R0 = PEEK(8): VTAB 21: PRINT CZ$; CHR$(6); TAB( 5);: IF R0 = 0 THEN IN$ = "<CTRL-S>YOU SEE NOTHING": GOTO 6320
6305 A$ = "":B$ = A$: PRINT "<CTRL-B><CTRL-S>IN ROOM #";R0;" THERE IS ";: IF PEEK(33104 +R0) >0 THEN A$ = "<CTRL-S>TREASURE "
6310 IF PEEK(33184 +R0) >0 THEN B$ = "A <CTRL-S>MONSTER ": IF LEN(A$) >1 THEN A$ = A$ +"<CTRL-C>AND "
6315 IN$ = A$ +B$: IF LEN(IN$) <3 THEN IN$ = "NOTHING "
6320 PRINT IN$;"<CTRL-D>": FOR I = 1 TO 1000: NEXT :PH = 5: VTAB 21: HTAB 1: PRINT CHR$(6);: VTAB 1: RETURN
6345 REM <CTRL-C><CTRL-C><CTRL-S>CLAIRVOYANCE <CTRL-C>
6350 GOSUB 3000:D = 23: GOSUB 1000:PH = 3:DM = INT( RND(1) *10 +1):IN$ = "<CTRL-I><CTRL-S>ASLEEP!<CTRL-N>": GOSUB 800:EP = DM
6395 RETURN : REM <CTRL-C><CTRL-C><CTRL-S>SLEEP<CTRL-C>
6400 POKE 9,PN: CALL PEEK(33564) + PEEK(33565) *256:PH = 5: PRINT CHR$(15); CHR$(3);: IF PEEK(11) = 1 THEN K = PEEK(5): GOSUB 120:DT = 3: GOSUB 128:K = PN
6445 RETURN : REM <CTRL-C><CTRL-C><CTRL-S>HEAL LT WOUNDS <CTRL-C>
6450 GOSUB 3000:PH = 3
6460 D = 22: GOSUB 1000:DM = 6: GOSUB 600:EP = 2 *DX: REM <CTRL-C><CTRL-C><CTRL-S>FIRE BALL<CTRL-C>
6495 RETURN
6500 GOSUB 3000: IF MT < >1 THEN IN$ = "<CTRL-I><CTRL-S>NOT A PERSON<CTRL-N>": GOSUB 90: GOTO 6545
6510 HCOLOR= 6:DX = 4: GOSUB 2000:PH = 2:DM = INT( RND(1) *10 +1):IN$ = "<CTRL-I><CTRL-S>HELD!<CTRL-N>": REM <CTRL-C><CTRL-C><CTRL-S>HOLD <CTRL-S>PERSON<CTRL-C>
6520 EP = DM:PH = 2: GOSUB 800
6545 RETURN
6550 GOSUB 3000: HCOLOR= 5:DX = 4: GOSUB 2000:PH = 4:DM = 6: GOSUB 600:EP = 1 *DX +1: REM <CTRL-C><CTRL-C><CTRL-S>LIGHTNING BOLT <CTRL-C>
6595 RETURN
6600 GOSUB 300:DT = PEEK(32774 +P): GOSUB 30:DT = DV + INT( RND(1) *4 +1): POKE 32774 +P,DV *16 +DT:PH = 5:EP = INT(DT -DV)/2: REM <CTRL-C><CTRL-S>STRIKING<CTRL-C>
6645 RETURN
6650 GOSUB 300:DT = PEEK(32787 +P): POKE 33616,DT: CALL PEEK(33568) + PEEK(33569) *256: IF PEEK(33620) = 0 THEN 6690: REM <CTRL-C><CTRL-C><CTRL-S>REMOVE CURSE<CTRL-C>
6670 DT = DT -16: POKE 32787 +P,DT
6690 PH = 3: RETURN
6700 GOSUB 3000: IF MT < >3 THEN IN$ = "<CTRL-I><CTRL-S>NOT A <CTRL-S>MONSTER!<CTRL-N>": GOSUB 90: GOTO 6745
6710 GOTO 6210
6745 RETURN : REM <CTRL-C><CTRL-C><CTRL-S>CHARM MONSTER<CTRL-C>
6750 RL = R1 -5:DX = 0:RH = R1 +5 *LV
6755 GOSUB 450: IF RL = >80 OR RL >RH THEN IN$ = "<CTRL-S>NO RING FOUND": GOSUB 380: GOTO 6770
6760 IF DX - INT(DX/16) *16 < >0 THEN 6755
6765 IN$ = "<CTRL-S>THERE<CTRL-B> IS A <CTRL-S>RING IN<CTRL-C><CTRL-S>ROOM # <CTRL-D>" + STR$(RL): GOSUB 380:EP = ABS((RL -R1)/LV)
6770 FOR T = 1 TO 1000: NEXT :PH = 4: VTAB 21: HTAB 1: PRINT CHR$(6): RETURN : REM <CTRL-C><CTRL-C><CTRL-S>FIND RING<CTRL-C>
6800 GOSUB 100:V1 = V:H1 = H +1: GOSUB 3030:DM = 3 *LV:PH = PEEK(33002): GOSUB 600:EP = 2 *DX/LV:P = PEEK(32791 +PN) -1:P = P +256 *(P <0): POKE 32791 +PN,P: REM <CTRL-C><CTRL-C><CTRL-S>TOUCH OF DEATH<CTRL-C>
6845 RETURN
6850 POKE 32796 +PN,1: REM <CTRL-C><CTRL-C> <CTRL-S>FIRE RESISTANCE<CTRL-C>
6895 RETURN
6900 DT = PEEK(32775 +PN): GOSUB 30:DT = DT +8 *(DT <8)
6910 POKE 32775 +PN,DV *16 +DT:EP = 5:PH = 3: REM <CTRL-C><CTRL-C><CTRL-S>INVISIBILITY, <CTRL-S>AMULET OF <CTRL-S>SECRECY, OR <CTRL-S>PROTECTION SPELL<CTRL-C>
6945 RETURN
6950 GOSUB 3000: IF MT < >2 THEN IN$ = "<CTRL-I><CTRL-S>NOT AN UNDEAD!<CTRL-N>": GOSUB 90: GOTO 6245
6960 GOTO 6210: REM <CTRL-C><CTRL-C><CTRL-S>CHARM UNDEAD<CTRL-C>
7050 POKE 33002, INT( RND(1) *4 +6): REM SPEED
7095 RETURN
7100 RL = R1 -5:DX = 0:RH = 5 *LV
7110 GOSUB 450: IF RL = >80 OR RL >RH +1 THEN IN$ = "<CTRL-S>NO HIGH TREASURE FOUND": GOSUB 380: GOTO 6770
7120 IN$ = "<CTRL-S>A HIGH<CTRL-B> TREASURE IS IN<CTRL-C><CTRL-S>ROOM #<CTRL-D> " + STR$(RL):EP = ABS((RL -R1)/LV): REM <CTRL-C><CTRL-C><CTRL-S>FIND <CTRL-S>TREASURE<CTRL-C>
7130 GOSUB 380
7145 RETURN
7150 GOSUB 3000:TH = H1:TV = V1:PH = 5: FOR WF = 1 TO 3: GOSUB 6460:H1 = TH:V1 = TV:K = PN: GOSUB 100: IF PEEK(MB) = 0 AND WF <3 THEN GOSUB 3000:TH = H1:TV = V1
7195 NEXT WF: RETURN : REM <CTRL-C><CTRL-C><CTRL-S>WAND OF FIREBALLS<CTRL-C>
7250 POKE 9,PN: CALL PEEK(33562) + PEEK(33563) *256:PH = 5: PRINT CHR$(15); CHR$(3);: IF PEEK(11) = 1 THEN K = PEEK(5): GOSUB 120:DT = 3: GOSUB 128:K = PN
7295 RETURN : REM <CTRL-C><CTRL-C><CTRL-S>RING REGENERATION<CTRL-C>
7400 REM RING STORING
7445 RETURN
7450 DX = PEEK(32791 +PN):DX = DX -1: IF DX <0 THEN DX = DX +256: REM RING WEAKNESS
7495 POKE 32791 +PN,DX: RETURN
7550 P = PEEK(32795 +PN): POKE 32795 +PN,0:EP = PEEK(32794 +PN): POKE 32794 +PN,EP -1 *(EP >0): IF EP = 0 THEN POKE 32787 +PN, PEEK(32787 +PN) -64
7555 ON P GOSUB 6350,6550,6800,6900,7100,7600,7650,7250
7560 PH = 0:EP = 0: RETURN : REM <CTRL-C><CTRL-C><CTRL-S>RING OF THE <CTRL-S>DJINN<CTRL-C>
7600 R0 = INT( RND(1) *80 +1): IF R0 = R1 THEN 7600
7610 FOR I = 32776 TO 32904 STEP 32: IF PEEK(I) = R1 THEN POKE I,R0
7620 NEXT I: POKE 33020,0: RETURN : REM <CTRL-C><CTRL-C><CTRL-S>TELEPORT<CTRL-C>
7650 I = 0
7655 I = I +1: IF PEEK(33024 +I) < >5 THEN 7655
7660 IF I >8 THEN 7445
7665 R0 = I: GOTO 7610: REM <CTRL-C><CTRL-C><CTRL-S>ESCAPE<CTRL-C>
7700 DX = INT( RND(1) *8 +1): ON DX GOTO 7710,7720,7730,7710,7730,7720,7730,7710
7710 IN$ = "<CTRL-S>YOU'RE CUTE!": GOTO 7770
7720 DP = 241: GOTO 7740
7730 DP = 209
7740 K = 0: FOR I = 0 TO 79: IF PEEK(I +33184) = DP OR PEEK(I +33184) = DP -1 THEN K = I:I = 79
7745 NEXT I:IN$ = "<CTRL-S>THE " + MID$ ("<CTRL-S>EVIL <CTRL-S>MAGE <CTRL-S>HOMONCULUS ",1 +12 *(DP = 209),12) +" IS ": IF K = 0 THEN IN$ = IN$ +"MISSING!": GOTO 7770
7750 IF K = R1 +1 OR K = R1 -1 OR K = R1 +8 OR K = R1 -8 THEN IN$ = IN$ +"NEXT DOOR!": GOTO 7770
7755 IF K <R1 +10 AND K >R1 -10 THEN IN$ = IN$ +"NEARBY!": GOTO 7770
7760 IF K >R1 +10 THEN IN$ = IN$ +"SOUTHWARD!": GOTO 7770
7765 IN$ = IN$ +"NORTHWARD!"
7770 GOSUB 380: RETURN
8000 P = PEEK(32782 +PN) +EP:HP = PEEK(32790 +PN):LV = PEEK(32780 +PN):DT = PEEK(32774 +PN): GOSUB 30:DM = (DV +1) *16 +DT
8001 POKE 32782 +PN,P -256 *(P >255): POKE 32993, PEEK(32993) +PH: IF P >250 THEN EP = P -250: POKE 32774 +PN,DM: POKE 32782 +PN,EP: POKE 32790 +PN, INT(HP/LV) *(LV +1): POKE 32780 +PN,LV +1 -(LV >14)
8002 K = PN:P = PEEK(32793 +PN): POKE 32793 +PN,0: IF P >0 THEN 6020
8005 DT = PEEK(33184 +R1): GOSUB 30: IF DV = 15 THEN 10000
8010 POKE 32996,237: VTAB 1: PRINT CHR$(15); CHR$(3);D$;"RUNPROG2"
9000 IF PEEK(222) = 255 THEN RESUME
9010 CLEAR : GOTO 5
10000 POKE 33616, PEEK(33400): POKE 33624, PEEK(33401): CALL PEEK(33568) + PEEK(33569) *256:MB = 33408
10005 GOSUB 260: IF PEEK(MB +5) < >15 AND MB <33530 THEN 10005
10010 RX = INT( RND(1) *16): IF PEEK(33616 +RX) = 1 THEN ON RX +1 GOTO 10275,10175,10125,10015,10050,10200,10075,10150,10030,10015,10150,10030,10100,10015,10275,10175
10015 GOTO 8010
10030 GOSUB 3500:D = 20: GOSUB 1000:DM = 4: GOSUB 500: GOTO 10015
10050 AC = PEEK(33393):RX = INT( RND(1) *4 +1):AC = AC -RX: IF AC <0 THEN AC = AC +256
10055 POKE 33393,AC: GOTO 10015
10075 RX = INT( RND(1) * PEEK(33394) +4): IF RX >127 THEN RX = 127
10080 IF RX < PEEK(MB +7) THEN RX = PEEK(MB +7)
10085 POKE MB +7,RX: GOTO 10015
10100 GOSUB 3500:D = 21: GOSUB 1000:DM = 2: GOSUB 500: GOTO 10015
10125 GOSUB 3500: IF INT( RND(1) *10 +1) < PEEK(32780 +P) THEN 10145
10130 IN$ = "<CTRL-S>PLAYER #" + STR$( INT(P/32 +1)) +" IS ASLEEP!": GOSUB 380:DT = PEEK(32775 +P): GOSUB 30: POKE 32775 +P,DV *16 +11
10145 GOTO 10015
10150 GOSUB 3500:D = 22: GOSUB 1000:DM = 6: GOSUB 500: GOTO 10015
10175 GOSUB 3500: IF PEEK(32787 +P) = 0 THEN 10175
10185 POKE 33616, PEEK(32787 +P): CALL PEEK(33568) + PEEK(33569): FOR CY = 7 TO 0 STEP -1: IF PEEK(33616 +CY) = 0 THEN 10195
10190 POKE 33616 +CY,0: CALL PEEK(33584) + PEEK(33585) *256: POKE 32787 +P, PEEK(33616):CY = 0:IN$ = "<CTRL-S>SOMEONE HAS LOST A RING!": GOSUB 380
10195 NEXT CY: GOTO 10015
10200 GOSUB 3500: HCOLOR= 5:DX = 4: GOSUB 2000:DM = 6: GOSUB 500: GOTO 10015
10275 R0 = INT( RND(1) * PEEK(33394) +1): IF R0 = R1 OR PEEK(33024 +R0) = 255 OR PEEK(33184 +R0) >0 OR R0 <0 OR R0 >79 THEN 10275
10278 K = MB: GOSUB 150: POKE 250,DP: POKE 251,H: POKE 253,V: CALL XD
10280 POKE 33184 +R0,240: POKE 33184 +R1,0: POKE 33104 +R0, PEEK(33104 +R1): POKE 33104 +R1,0: POKE MB,R0:IN$ = "<CTRL-S>HE'S TELEPORTING OUT!": GOSUB 380: GOTO 10015
15002 DATA "<CTRL-B><CTRL-A>1<CTRL-K>H <CTRL-C>FS<CTRL-C>LG<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-S>HS<CTRL-C><CTRL-S>FA<CTRL-C><CTRL-S>L<CTRL-S>G<CTRL-D>","<CTRL-B><CTRL-A>1 0<CTRL-C>12<CTRL-C>34<CTRL-D>","<CTRL-B><CTRL-A>1 <CTRL-C> $%<CTRL-C>&'(<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-L>H <CTRL-C><CTRL-S>W<CTRL-S>T<CTRL-C><CTRL-S>ZG<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-L>HT<CTRL-C><CTRL-S>WF<CTRL-C><CTRL-S>Z<CTRL-S>G<CTRL-D>","<CTRL-B><CTRL-A>1 5<CTRL-C>67<CTRL-C>89<CTRL-D>","<CTRL-B><CTRL-A>1 <CTRL-C> $%<CTRL-C>&'-<CTRL-D>"
15003 DATA "<CTRL-B><CTRL-A>1<CTRL-K>E <CTRL-C>B<CTRL-L>B<CTRL-C><CTRL-S>KW<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-S>DE<CTRL-C>DC<CTRL-C><CTRL-S>KW<CTRL-D>","<CTRL-B><CTRL-A>1 )<CTRL-C>;+<CTRL-C>8/<CTRL-D>","<CTRL-B><CTRL-A>1 <CTRL-C> $%<CTRL-C>&'*<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-K> <CTRL-C>NO<CTRL-C>PQ<CTRL-D>","<CTRL-B><CTRL-A>1 <CTRL-L>X<CTRL-C><CTRL-S>NP<CTRL-C><CTRL-K>PQ<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-K> <CTRL-C> M<CTRL-C>JR<CTRL-D>","<CTRL-B><CTRL-A>1 <CTRL-C> $%<CTRL-C>&'#<CTRL-D>"
15004 DATA "<CTRL-B><CTRL-A>1<CTRL-K>H <CTRL-C>FA<CTRL-C>LG<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-S>HX<CTRL-C><CTRL-S>FA<CTRL-C><CTRL-K>LG<CTRL-D>","<CTRL-B><CTRL-A>1 0<CTRL-C>@2<CTRL-C>34<CTRL-D>","<CTRL-B><CTRL-A>1 <CTRL-C> $%<CTRL-C>&'#<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-S>ES<CTRL-C><CTRL-S>BY<CTRL-C><CTRL-S>KW<CTRL-K><CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-S>EM<CTRL-C><CTRL-S>BZ<CTRL-C><CTRL-S>KW<CTRL-K><CTRL-D>","<CTRL-B><CTRL-A>1 )<CTRL-C><CTRL-L>I<CTRL-K>+<CTRL-C>8/<CTRL-D>","<CTRL-B><CTRL-A>1 <CTRL-C> $%<CTRL-C>&'(<CTRL-D>"
15005 DATA "<CTRL-B><CTRL-A>1 <CTRL-C><CTRL-S>NO<CTRL-C><CTRL-K>PQ<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-S> Q<CTRL-C><CTRL-S>NR<CTRL-C><CTRL-K>PQ<CTRL-D>" ,"<CTRL-B><CTRL-A>1<CTRL-K> <CTRL-C>IM<CTRL-C>JR<CTRL-D>","<CTRL-B><CTRL-A>1 <CTRL-C> $%<CTRL-C>&'(<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-K>H <CTRL-C>F<CTRL-L>B<CTRL-C><CTRL-K>LG<CTRL-D>","<CTRL-B><CTRL-A>1!<CTRL-L>E<CTRL-C>=<CTRL-S>C<CTRL-C><CTRL-K>LG<CTRL-D>","<CTRL-B><CTRL-A>1 0<CTRL-C>@2<CTRL-C>34<CTRL-D>","<CTRL-B><CTRL-A>1 <CTRL-C> $%<CTRL-C>&'*<CTRL-D>"
15006 DATA "<CTRL-B><CTRL-A>1<CTRL-S>H <CTRL-C><CTRL-K>WT<CTRL-C>LG<CTRL-D>","<CTRL-B><CTRL-A>1<CTRL-S>HT<CTRL-C><CTRL-S>WU<CTRL-C><CTRL-K>LG<CTRL-D>","<CTRL-B><CTRL-A>1 0<CTRL-C>67<CTRL-C>34<CTRL-D>","<CTRL-B><CTRL-A>1 <CTRL-C> $%<CTRL-C>&'-<CTRL-D>"
20000 REM <CTRL-C><CTRL-C> MAGIC IN USE